<!DOCTYPE html>
<!-- 声明html5标准 -->
<html lang='zh'>
<!-- 这个主要是给搜索引擎看的，搜索引擎不会去判断该站点是中文站还是英文站，所以这句话就是让搜索引擎知道，你的站点是中文站
对html页面本身不会有影响,这些现在都是html规范，你的页面越规范，就越容易被收录 -->

<head>
    <meta charset='UTF-8'>
    <!-- 声明使用UTF-8 Unicode编码，UTF-8编码优先采用的编码 -->
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <!--  X-UA-Compatible是针对IE新加的一个设置 声明兼容到edge -->
    <meta name='viewport' content='width=device-width, initial-scale=no'>
    <!--width:可视区域的宽度，值可为数字或关键词device-width intial-scale:页面首次被显示是可视区域的缩放级别，取值1.0则页面按实际尺寸显示，无任何缩放 -->
    <title>Document</title>
    <!-- 引入vue.js -->
    <script src='./js/vue.js'></script>
</head>

<body>
    <div id='root'>
        <input type="text" placeholder="请输入姓" v-model="firstName"> -
        <input type="text" placeholder="请输入名" v-model="lastName">
        <input type="text" :value="fullName">
        <button @click="clickFuntion">点击我改变计算属性的值</button>
    </div>
    <script>
        let vue = new Vue({
            // 选择控制区域,通过选择器去选到他，工作中一般使用id选择器;
            el: '#root',
            // 数据储存位置
            data: {
                firstName: "",
                lastName: "",

            },
            // 方法的储存位置
            methods: {
                clickFuntion() {
                    this.fullName = "123456789"
                    console.log(this.fullName)
                }
            },
            // computed  
            computed: {
                // 创建了一个函数,这里函数用法和data里面的数据时相同. 
                // 在computed中,可以定义一些属性,这些属性,叫做计算属性,计算属性的本质就是一个方法,只不过,
                // 我们在使用这些计算属性的时候,是把他们的名称直接当做属性来使用的:并不会把计算属性,当做方法去调用:
                // 注意1 计算属性, 在引用的时候, 一定不要加()去调用, 直接把他当做普通属性去使用就好
                // 注意2 计算属性, 这个function内部, 所用到的任何data中的数据发生了变化, 就会立即重新计算这个计算属性的值
                // 注意3: 计算属性的求值结果, 会被缓存起来, 方便下次直接使用; 如果计算属性方法中, 所以来的任何数据, 
                // 都没有发生过变化, 则不会重新对计算属性求值
                
                fullName() {
                    console.log("执行了计算属性函数")
                    return this.firstName + " - " + this.lastName
                }

                // 如果想修改计算属性的值时, 需要添加set函数.在set函数内改变引用data的值时,进而改变计算属性的值.
                // fullName: {
                //     get() {
                //         return this.firstName + " - " + this.lastName
                //     },
                //     set(value) {
                //         this.firstName = value;
                //     }
                // }
            }
        })
    </script>
</body>

</html>